草庐IT

javascript oop、instanceof 和基类

全部标签

c# - 基类中的 NUnit 和 [SetUp]

我正在查看一些使用NUnit的测试代码,它继承自包含[SetUp]属性的基类:publicclassBaseClass{[SetUp]publicvoidSetUp(){//dosomething}}[TestFixture]publicclassDerivedClass:BaseClass{[SetUp]publicvoidSetUp(){//dosomethingelse,withnocalltobase.SetUp()}//testsrundownhere.//[Test]//[Test]//etc}派生类当然需要在基类的SetUp()方法中完成的工作。我是不是遗漏了什么,或者当

c# - 如何将属性添加到基类的属性

我有几个像这样的模型类:publicclassMyModelBase{publicstringName{get;set;}}publicclassMyModel:MyModelBase{publicstringSomeOtherProperty{get;set;}}MyModel如何向Name属性添加[Required]属性? 最佳答案 在父类中声明属性为virtual:publicclassMyModelBase{publicvirtualstringName{get;set;}}publicclassMyModel:MyMode

c# - 为什么在基类构造函数中设置时重写的 get-only 属性保持为 null?

我尝试了以下示例:publicclassTestBase{publicvirtualstringReadOnly{get;}publicTestBase(){ReadOnly="frombase";}}classTest:TestBase{publicoverridestringReadOnly{get;}publicTest(){//nothinghere}}当我创建一个Test实例时,我看到ReadOnly保持为空。但为什么?我真的不明白它的窍门,有人可以向我解释为什么会这样吗?至少我会预料到一个错误,即不能在所属类之外设置只读属性。 最佳答案

C# - 使所有派生类调用基类构造函数

我有一个基类Character,它有几个派生自它的类。基类有各种字段和方法。我所有的派生类都使用相同的基类构造函数,但如果我不在派生类中重新定义构造函数,我会得到错误:错误:“子类”类不包含采用此数量参数的构造函数我不想在每个派生类中重新定义构造函数,因为如果构造函数更改,我必须在每个类中更改它,请原谅任何误解,这与只编写一次代码的想法背道而驰? 最佳答案 您可以使用以下语法从派生类调用基类构造函数:publicDerivedClass():base(){//Doadditionalworkhereotherwiseyoucanle

c# - 我是否应该密封所有我知道不应该用作基类的类?

我是否应该密封所有我知道不应该用作基类的类,即使没有明显的性能或安全问题,还是这只是增加了麻烦? 最佳答案 一个可扩展的类实现了它可以被扩展的特性——这个特性与该类的任何其他特性一样,应该被视为一个特性,与方法没有区别。应仔细考虑所有功能,以确保它们满足使用该功能的客户的目标。需要设计、实现、审查安全问题、调试、记录和维护功能。所有这些都需要付出努力,而努力通常需要付出金钱。你花谁的钱?他们可能对您是否应该执行此功能有意见。基本上,您有三个选择:1)花钱做这个功能,这样你就有信心它是正确的、健壮的、安全的并且满足用户需求。2)不执行

c# - 如何从基类中找到子类名?

在运行时,在基类中,如何找到当前的子类名? 最佳答案 获取当前对象的类型,然后是它的名称。this.GetType().Name 关于c#-如何从基类中找到子类名?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4774820/

c# - 调用基类的方法

在c++中我会做classA{public:virtualvoidstuff(){//something}};classB:publicApublic:virtualvoidstuff(){//something2A::stuff()//something}};我如何在C#中执行此操作?我试过了publicvoidstuff(){//something2A.stuff();//something}但这行不通 最佳答案 base是在C#中引用父类(superclass)的关键字。使用:base.stuff();

c# - 从 C# 中的基类获取派生类型?

假设我们有这两个类:publicclassDerived:Base{publicDerived(strings):base(s){}}publicclassBase{protectedBase(strings){}}如何从Base的构造函数中找出Derived是调用者?这是我想出的:publicclassDerived:Base{publicDerived(strings):base(typeof(Derived),s){}}publicclassBase{protectedBase(Typetype,strings){}}是否有另一种不需要传递typeof(Derived)的方法,例

c# - 来自基类的用户定义转换运算符

简介我知道“不允许用户定义的与基类之间的转换”。作为对此规则的解释,MSDN给出了“您不需要此运算符”。我明白不需要用户定义的到基类的转换,因为这显然是隐式完成的。但是,我确实需要从基类进行转换。在我当前的设计中,一个非托管代码的包装器,我使用一个指针,存储在一个实体类中。所有使用指针的类都派生自该实体类,例如Body类。因此我有:方法AclassEntity{IntPtrPointer;Entity(IntPtrpointer){this.Pointer=pointer;}}classBody:Entity{Body(IntPtrpointer):base(pointer){}exp

c# - 是否可以使用显式类型转换将基类对象分配给派生类引用?

是否可以在C#中使用显式类型转换将基类对象分配给派生类引用?我试过了,它会产生运行时错误。 最佳答案 没有。对派生类的引用实际上必须引用派生类的实例(或null)。否则你会如何期望它的行为?例如:objecto=newobject();strings=(string)o;inti=s.Length;//Whatcanthissensiblydo?如果您希望能够将基类型的实例转换为派生类型,我建议您编写一个方法来创建合适的派生类型实例。或者再次查看您的继承树并尝试重新设计,以便您一开始就不需要这样做。